<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数使用事项和细节</title>
    <script type="text/javascript">
        //注意，js的函数与java有很多地方不同，不要与java搞混了

        //1.js中的所有重载会覆盖上一次的定义
        function f1(){
            alert("ok,jack")
        }

        function f1(name){
            alert("你好,"+name)
        }
        f1() // 你好,(undefined)
             //调用f1(name)，如果，没有name就默认undefined

        //2.函数的arguments 隐形参数(作用在function函数内)
        //(1)隐形参数: 在function函数中不需要定义，可以直接获取所有参数的变量
        function f2(){
            // function f2(arguments)隐形参数，arguments是数组
            //隐形参数arguments有点像java的public void fun(int...arg){}
            //但这里的arguments不限制类型
            //注意不用+ 否则会把类型输出而不是数据输出, 用,
            console.log("arguments=",arguments)
            console.log("arguments长度"+arguments.length)
            alert("f2()...")
        }
        f2(10,20,30)//没有参数也可以，被存为隐形参数

        //细节1
        //(1)如果函数有形参，在传入参数的时候按顺序匹配
        //(2)如果有匹配上的就赋给他，如果没有，也无所谓，仍然会把所有实参赋给arguments
        function f3(n){
            console.log("f3的arguments=",arguments)//22,100,99
            console.log("f3的arguments长度"+arguments.length)//3
        }
        f3(22,100,99)

        //细节2
        //如果形参个数大于实参个数，则该形参的值为undefined
        function f4(n,a,b,c){
            console.log("f4的arguments=",arguments)//22,100,99
            console.log("f4的arguments长度"+arguments.length)//3
            //这里c为undefined
        }
        f4(22,100,99)
    </script>
</head>
<body>

</body>
</html>